local webserver = "https://scan.loca.lt" local resolution = "120" local size = 0.075 local basepart = Instance.new("Part") basepart.CanCollide = false basepart.CanTouch = false basepart.CastShadow = false basepart.Anchored = true basepart.CanQuery = false basepart.Material = Enum.Material.SmoothPlastic local function number_to_rgb(n: number) : Color3 local r = bit32.rshift(bit32.band(n, 0xff000000), 24) local g = bit32.rshift(bit32.band(n, 0x00ff0000), 16) local b = bit32.rshift(bit32.band(n, 0x0000ff00), 8) return Color3.new(r/255, g/255, b/255) end owner.Chatted:connect(function(m) local args = m:split(">") if args[1] == "img" then if args[2] == "clear" then local ch = script:GetChildren() for i = 1, #ch do ch[i]:Destroy() if i % 150 == 0 then task.wait(0.05) end end end if args[2] == "res" then resolution = args[3] end if args[2] == "load" then local data = game:GetService("HttpService"):GetAsync(`{webserver}/image-data?url={args[3]}&resolution={resolution}`) data = game:GetService("HttpService"):JSONDecode(data) local origin = owner.Character:GetPivot().Position local localres = tonumber(data.resolution) local width = tonumber(data.width) local x, y = -1, 0 for i = 1, #data.pixels do local pixel = data.pixels[i] local offset = pixel[2] and pixel[2] + 1 or 1 x += offset if x >= width / localres then x = x - width y += 1 end local newpart = basepart:Clone() newpart.Size = Vector3.new(offset * size, size, size) newpart.Position = origin + Vector3.new((x * size) - (newpart.Size.X / 2), 0, y * size) newpart.Color = number_to_rgb(pixel[1]) newpart.Parent = script if i%80 == 0 then task.wait() end end end end end)